package top.lshaci.learning.singleton;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * StaticConstantsSingleton
 *
 * <pre>
 *     静态常量 - 饿汉式
 *     优点：写法简单，在类装载的时候完成实例化。避免了线程的同步问题
 *     缺点：在类装载的时候完成实例化，没有达到懒加载的效果。如果该实例未使用，则会造成内存的浪费
 *
 *     这种方式基于类加载机制避免了多线程的同步问题，不过，instance在类装载时就实例化，
 *     在单例模式中大多数都是调用getInstance方法，但是导致类装载的原因有很多种，因此不能确定有其它的方式导致类装载
 *     这时候初始化instance就没有达到懒加载的效果
 *
 *     可能造成内存浪费
 * </pre>
 *
 * @author lshaci
 * @since 1.0.0
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class StaticConstants {

    private static final StaticConstants singleton = new StaticConstants();

    public static StaticConstants instance() {
        return singleton;
    }
}
